A. Field of the Invention
The present invention relates generally to data switching and routing, and more particularly, to data flow control over a switch fabric.
B. Description of Related Art
Routers receive data on a physical media, such as optical fiber, analyze the data to determine its destination, and output the data on a physical media in accordance with the destination. Routers were initially designed using a general purpose processor executing large software programs. As line rates and traffic volume increased, however, general purpose processors could not scale to meet these new demands. For example, as functionality was added to the software, such as accounting and policing functionality, these routers suffered performance degradation. In some instances, the routers failed to handle traffic at line rate when the new functionality was turned on.
To meet the new demands, purpose-built routers were architected. Purpose-built routers are designed and built with components optimized for routing. They not only handled higher line rates and higher network traffic volume, they also added functionality without compromising line rate performance.
A purpose-built router may include a number of input and output ports from which it transmits and receives information packets. A switching fabric may be implemented in the router to carry the packets between ports.
Flow-control refers to the metering of packet flow through the network and/or through the router. For example, it may be desirable to limit the number of packets transmitted from a particular port of the router in order to ensure that the router's switching fabric is not overloaded. One known method of implementing flow-control controls flow on a per-queue basis. One disadvantage of per-queue flow control is that it may not evenly distribute flow across all elements of the system. For example, in a system using a switch fabric, the fabric may become congested even though there is per-queue flow control.
It is therefore desirable to efficiently implement flow control without the performance degradation caused by conventional per-queue controls.